// 二分查找方式寻目标
const search2 = (nums, target) => {
    // 1.左右索引, 左索引从0开始, 右索引为数据从长度
    let left = 0;
    let right = nums.length - 1;
    // 2.左索引小于等于右索引, 则继续while循环
    while (left <= right) {
        // 3.得出总数据中间索引, 拿到中间值
        let index = Math.floor((right - left) / 2) - left;
        let value = nums[index]
        // 4-1拿中间值与目标值比较, 有结果则输出索引。
        // 4-2中间值大于目标值, 则右值赋中间索引向前一位, 否则左值赋中间值向后一位
        if (value === target) {
            return index
        } else if (value > target) {
            right = index - 1
        } else {
            left = index + 1
        }
    }
    // 5.左索引大于右索引, 则相当于没找到, 返回-1
    return -1
}

const testArr = [12,3,123,12,3,12,999];
console.log('二分查找方式寻目标 => ', search2(testArr, 12));
